on:
  repository_dispatch:
    types: [funcbench_start]
name: Funcbench Workflow
jobs:
  run_funcbench:
    name: Running funcbench
    if: github.event.action == 'funcbench_start'
    runs-on: ubuntu-latest
    env:
      AUTH_FILE: ${{ secrets.TEST_INFRA_PROVIDER_AUTH }}
      BRANCH: ${{ github.event.client_payload.BRANCH }}
      BENCH_FUNC_REGEX: ${{ github.event.client_payload.BENCH_FUNC_REGEX }}
      PACKAGE_PATH: ${{ github.event.client_payload.PACKAGE_PATH }}
      GITHUB_TOKEN: ${{ secrets.PROMBOT_TOKEN }}
      GITHUB_ORG: prometheus
      GITHUB_REPO: prometheus
      GITHUB_STATUS_TARGET_URL: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}
      LAST_COMMIT_SHA: ${{ github.event.client_payload.LAST_COMMIT_SHA }}
      GKE_PROJECT_ID: macro-mile-203600
      PR_NUMBER: ${{ github.event.client_payload.PR_NUMBER }}
      PROVIDER: gke
      ZONE: europe-west3-a
    steps:
    - name: Update status to pending
      run: >-
        curl -i -X POST
        -H "Authorization: Bearer $GITHUB_TOKEN"
        -H "Content-Type: application/json"
        --data '{"state":"pending","context":"funcbench-status","target_url":"'$GITHUB_STATUS_TARGET_URL'"}'
        "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"
    - name: Prepare nodepool
      uses: docker://prominfra/funcbench:master
      with:
        entrypoint: 'docker_entrypoint'
        args: make deploy
    - name: Delete all resources
      if: always()
      uses: docker://prominfra/funcbench:master
      with:
        entrypoint: 'docker_entrypoint'
        args: make clean
    - name: Update status to failure
      if: failure()
      run: >-
        curl -i -X POST
        -H "Authorization: Bearer $GITHUB_TOKEN"
        -H "Content-Type: application/json"
        --data '{"state":"failure","context":"funcbench-status","target_url":"'$GITHUB_STATUS_TARGET_URL'"}'
        "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"
    - name: Update status to success
      if: success()
      run: >-
        curl -i -X POST
        -H "Authorization: Bearer $GITHUB_TOKEN"
        -H "Content-Type: application/json"
        --data '{"state":"success","context":"funcbench-status","target_url":"'$GITHUB_STATUS_TARGET_URL'"}'
        "https://api.github.com/repos/$GITHUB_REPOSITORY/statuses/$LAST_COMMIT_SHA"
